#include <myhead.h>
#include "page.h"
#include "print.h"
#include "mypkg.h"
#include "client.h"

void* page_to_welcome(){
	//printf("***********************************\n");                  
	//printf("\t欢迎使用《终端聊天室》\n");
	//printf("***********************************\n");
	print_nav("欢迎页面");
	printf("[操作选项]\n");
	printf("\t1-用户登录\n");
	printf("\t2-用户注册\n");
	printf("\tQ-退出系统\n");
	printf("[请输入]:");
	char cmd[10];
	fgets(cmd, sizeof(cmd), stdin);
	cmd[strlen(cmd)-1]=0;
	if(strcmp("1", cmd)==0){
		//login
		return page_to_login;
	}
	if(strcmp("2", cmd)==0){
		//register
		return page_to_regist;
	}
	if(strcmp("Q", cmd)==0){
		//退出系统
		print_red("即将退出系统!\n");
		//exit(EXIT_SUCCESS);
		kill(getpid(), SIGKILL);
		return NULL;
	}
	print_red("错误的指令，请重新输入");
	return page_to_welcome;
}

void* page_to_login(pkg_t* retPkg, char* errmsg){
	//login
	print_nav("欢迎界面/用户登录");
	//输入用户名
	char username[20]={0};
	printf("用户名:");
	fgets(username,sizeof(username),stdin);
	username[strlen(username)-1]=0;
	char passwd[20]={0};
	//输入密码
	printf("密码:");
	fgets(passwd,sizeof(passwd),stdin);
	passwd[strlen(passwd)-1]=0;
	//打包登录协议报
	char sendBuf[4096]={0};
	int len=pkg_pack_buf(sendBuf, MSG_TYPE_LOGIN,2,username,passwd);
	//通信
	int ret=client_sendAndRet(sendBuf, len, retPkg, errmsg);
	if(ret != 0){
		print_red2("登录失败", errmsg);
		return page_to_welcome;
	}
	if(strcmp(pkg_get(retPkg, 0), "OK") != 0){
		print_red2("登录失败", pkg_get(retPkg, 1));
		return page_to_welcome;
	}
	
	print_green("登录成功\n");
	//开始发送心跳报文
	client_start_heart(username);

	return page_to_index;
}


void* page_to_regist(pkg_t* retPkg, char* errmsg){
	print_nav("欢迎页/用户注册");
	//输入用户名
	char username[20]={0};
	printf("用户名:");
	fgets(username,sizeof(username),stdin);
	username[strlen(username)-1]=0;
	//输入密码
	char passwd[20]={0};
	printf("密码:");
	fgets(passwd,sizeof(passwd),stdin);
	passwd[strlen(passwd)-1]=0;
	//再次输入密码
	char passwd2[20]={0};
	printf("确认密码:");
	fgets(passwd2,sizeof(passwd2),stdin);
	passwd2[strlen(passwd2)-1]=0;

	if(strcmp(passwd, passwd2) != 0){
		print_red("两次输入的密码不一致");
		return page_to_welcome;
	}

	//打包报文
	char sendBuf[4096]={0};
	int len=pkg_pack_buf(sendBuf, MSG_TYPE_REG,2,username,passwd);
	//通信
	int ret=client_sendAndRet(sendBuf, len, retPkg, errmsg);
	if(ret != 0){
		print_red2("注册失败", errmsg);
		return page_to_welcome;
	}
	if(strcmp(pkg_get(retPkg, 0), "OK") != 0){
		print_red2("注册失败", pkg_get(retPkg, 1));
		return page_to_welcome;
	}
	print_green("注册成功");
	return page_to_welcome;
}
